Highcharts এর মতো ডেটা ভিজ্যুয়ালাইজেশন লাইব্রেরির ব্যবহারকারীদের একটি গুরুত্বপূর্ণ বিষয় হলো পারফরম্যান্স অপ্টিমাইজেশন। বিশেষ করে বড় ডেটাসেট বা ডায়নামিক ডেটা ব্যবহার করার সময় চার্টের লোডিং স্পিড এবং রেন্ডারিং সময় অনেক গুরুত্বপূর্ণ হয়ে দাঁড়ায়। এখানে কিছু কার্যকরী টিপস দেওয়া হলো যেগুলি Highcharts এর পারফরম্যান্স টিউনিং করতে সহায়ক।
Highcharts চার্টে অনেক ডেটা প্রদর্শন করলে তা চার্টের পারফরম্যান্সকে প্রভাবিত করতে পারে। অতিরিক্ত পয়েন্ট বা সিরিজের ডেটা লোড না করার চেষ্টা করুন।
উদাহরণ: 1000 পয়েন্টের মধ্যে প্রতিটি দশম পয়েন্ট প্রদর্শন:
data: data.filter((value, index) => index % 10 === 0)
Highcharts কিছু অংশ যেমন, চার্টের লেআউট এবং কনফিগারেশন ক্যাশে রাখতে পারে, যাতে একাধিক রেন্ডারিং এ একই কনফিগারেশন বারবার কম্পাইল না হয়।
Highcharts.getOptions().global.useUTC = false; // UTC সমর্থন বন্ধ করুন
এটি জাভাস্ক্রিপ্ট এ কোডের দ্রুত অ্যাক্সেসের জন্য সুবিধা দেয়।
spline
এবং line
সিরিজ ব্যবহার করাHighcharts এর মধ্যে spline বা line সিরিজ ব্যবহার করলে, অনেক ডেটা পয়েন্ট কমিয়ে ভিন্ন ভিন্ন কিউবিক বেজিয়ার (Cubic Bezier) কার্ভ ব্যবহার করে পারফরম্যান্স বাড়ানো যেতে পারে। এতে অনেক ডেটা পয়েন্টে কোন সমস্যা ছাড়াই একটি স্নিগ্ধ রেসপন্স পাওয়া যায়।
series: [{
type: 'spline', // ডেটার স্নিগ্ধ এবং কম্প্যাক্ট প্রদর্শন
data: dataPoints
}]
এটি চার্টকে ফ্লুইড এবং কম্প্যাক্ট রাখবে, ফলে দ্রুত লোড হবে।
highcharts
এর renderer অপশন ব্যবহারHighcharts এ কিছু সময় SVG রেন্ডারিং করে রেন্ডারিং সময় বৃদ্ধি পায়, বিশেষ করে বড় ডেটাসেট থাকলে। এতে ভালো পারফরম্যান্সের জন্য Canvas রেন্ডারিং ব্যবহার করা যেতে পারে। এছাড়াও, রেন্ডারিংটি WebGL ব্যবহার করেও দ্রুত করা যেতে পারে।
WebGL এবং Canvas রেন্ডারিং সক্ষম করার জন্য:
chart: {
type: 'scatter',
renderTo: 'container',
backgroundColor: 'transparent',
events: {
load: function () {
this.series[0].setData(data); // ডেটা সরবরাহ
}
}
}
Highcharts-এ ডিফল্টরূপে point markers ব্যবহৃত হয়। যদি আপনার চার্টে অনেক ডেটা পয়েন্ট থাকে, তবে এটি পারফরম্যান্সে প্রভাব ফেলতে পারে। আপনি point markers বন্ধ করে বা রেন্ডার করা পয়েন্ট সংখ্যা সীমিত করতে পারেন।
plotOptions: {
scatter: {
marker: {
enabled: false // পয়েন্ট মার্কার বন্ধ করা
}
}
}
টুলটিপ একাধিক ডেটা পয়েন্টের উপর লোড হয়, বিশেষ করে বড় ডেটাসেটে। যদি আপনি টুলটিপের আচরণ কাস্টমাইজ করতে চান, যেমন শুধুমাত্র নির্দিষ্ট অংশে দেখানো, তাহলে এটি পারফরম্যান্স উন্নত করতে সহায়ক হতে পারে।
tooltip: {
shared: false, // একাধিক পয়েন্টের উপর টুলটিপ না দেখানো
pointFormat: '{point.y}' // শুধুমাত্র পয়েন্ট মান দেখানো
}
redraw
অপটিমাইজেশনHighcharts এ আপনি যখন একটি চার্টে রিসাইজ করবেন, তখন সেটি redraw
কার্যকলাপের মাধ্যমে চার্ট রেন্ডার করবে। যদি একাধিক চার্ট থাকে এবং বারবার redraw
করতে হয়, তাহলে throttling বা debouncing ব্যবহার করা যেতে পারে।
chart: {
events: {
redraw: function () {
console.log('Chart is redrawing');
}
}
}
এছাড়া, আপনি setTimeout বা requestAnimationFrame এর মতো থ্রটলিং পদ্ধতি ব্যবহার করতে পারেন।
Highcharts যখন ডেটা রেন্ডার করে তখন কিছু CSS প্রোপার্টি যেমন box-shadow
, border
, ইত্যাদি অতিরিক্ত লোড সৃষ্টি করতে পারে। এটি পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে। তাই এই ধরনের CSS স্টাইল কম ব্যবহার করা উচিত।
Highcharts এ পারফরম্যান্স টিউনিং একটি গুরুত্বপূর্ণ বিষয়, বিশেষ করে বড় ডেটাসেটের ক্ষেত্রে। এখানে কিছু প্রধান টিপস দেয়া হলো:
এই টিপসগুলো ব্যবহার করে Highcharts এ বড় ডেটাসেট পরিচালনা করা এবং চার্টের পারফরম্যান্স উন্নত করা সম্ভব।
Read more